/**
 * 系统项目名称
 * com.yunmai.scale.db.manager
 * IDBChangeListener.java
 * <p>
 * 2015-2-27-下午9:19:15
 * 2015云麦公司-版权所有
 */
package com.yunmai.library.db;

import java.lang.reflect.ParameterizedType;
import java.util.List;

/**
 *
 * IDBChangeListener
 *
 * YUNMAI
 *
 * 2015-2-27 下午9:19:15
 *
 *
 */
@SuppressWarnings("unchecked")
public abstract class AbstractDBChange<T> {

    private Class<T> entityClass;

    {
        entityClass = (Class<T>) ((ParameterizedType) getClass()
            .getGenericSuperclass())
            .getActualTypeArguments()[0];
    }

    /**
     * 创建一条记录成功
     *
     * @param t
     *void
     */
    public void onCreate(T t) {
    }

    /**
     * 更新一条记录成功
     *
     * @param t
     *void
     */
    public void onUpdate(T t) {
    }

    /**
     * 删除一条记录成功
     *
     * @param t
     *void
     */
    public void onDelete(T t) {
    }

    /**
     * 批量增加数据
     *
     * @param lists
     *void
     */
    public void onCreate(List<T> lists) {
    }

    /**
     * 批量更新数据
     *
     * @param lists
     *void
     */
    public void onUpdate(List<T> lists) {
    }

    /**
     * 批量删除数据
     *
     * @param lists
     *void
     */
    public void onDelete() {
    }

    /**
     * 批量删除数据
     *
     * @param lists
     *void
     */
    public void onCreateOrUpdate(List<T> lists) {
    }

    public String getEntityName() {
        return entityClass.getName();
    }

    public String getEntitySimpleName() {
        return entityClass.getSimpleName();
    }

    public Class<T> getEntityClass() {
        return entityClass;
    }

}
